#include "comm.hpp"
#include "log.hpp"
using namespace std;

int main()
{ 
    // 1. 创建管道
    Init init;
    Log log;
    log.Enable(Classfile);  // 多文件打印

    // 2. 打开管道
    // 等待写入方打开之后，自己才会打开文件，即如果写端没打开，读的一方会阻塞在open处
    // 因为如果写端没打开，都没数据写入，还读什么数据
    int fd = open(FIFO_FILE, O_RDONLY);    
    if(fd < 0)
    {
        perror("open");
        log(Fatal, "server open file done, error string: %s, error code: %d", strerror(errno), errno);
        exit(FIFO_OPEN_ERR);
    }

    log(Info, "server open file done, error string: %s, error code: %d", strerror(errno), errno);
    
    // 3. 通信
    while(true)
    {
        char buffer[1024] = {0};
        int sz = read(fd, buffer, sizeof(buffer));
        if(sz > 0)
        {
            buffer[sz] = 0;
            cout << "[client]$ " << buffer << endl;
        }
        else if(sz == 0)    // 写端关闭，读端也关闭
        {
            log(Info, "server quit! error string: %s, error code: %d", strerror(errno), errno);
            break;
        }
        else log(Error, "read pipe done, error string: %s, error code: %d", strerror(errno), errno);
    }

    close(fd);

   
    return 0;
}